Перейти к основному содержимому

Настройка аутентификации по SSH

SSH (Secure Shell) — это защищенный сетевой протокол, используемый для управления серверами и безопасной передачи данных. Аутентификация по SSH-ключам предоставляет безопасный альтернативный метод входа на сервер compared to традиционному парольному входу.

В этом руководстве мы подробно рассмотрим процесс настройки SSH-аутентификации на основе ключей на Linux-сервере.

Преимущества использования SSH-ключей

Основные преимущества использования SSH-ключей:

  • повышенная безопасность за счет криптографически сильных ключей;
  • устранение рисков, связанных со слабыми паролями;
  • возможность отключения входа по паролю, что снижает риск атак методом подбора;
  • удобство при использовании в сочетании с SSH-агентом;

Предварительные требования

Для аутентификации по SSH-ключам, необходимо:

  1. Клиентское устройство с операционной системой Linux, macOS или Windows (с установленным SSH-клиентом).
  2. Доступ к Linux-серверу с установленным SSH.
  3. Учетная запись на сервере с привилегиями sudo (для настройки сервера).
  4. Базовые знания работы с командной строкой.

Создание пары SSH-ключей

Для создания пары SSH-ключей, необходимо выполнить генерацию SSH-ключей (открытого и закрытого) на локальном компьютере.

Для ОС Linux и macOS

  1. Открыть терминал.

  2. Выполнить команду:

    ssh-keygen -t ed25519
  3. Будет предложено:

    • Указать путь для сохранения ключей (по умолчанию ~/.ssh/id_ed25519)
    • Установить фразовую парольную фразу (рекомендуется для дополнительной безопасности)

Для ОС Windows

Вариант 1. Использование Windows Subsystem for Linux (WSL):

  1. Установить WSL

  2. Выполнить команду:

ssh-keygen -t ed25519
  1. Будет предложено:
    • Указать путь для сохранения ключей (по умолчанию ~/.ssh/id_ed25519)
    • Установить фразовую парольную фразу (рекомендуется для дополнительной безопасности)

Вариант 2. Использование Git Bash:

  1. Установить Git for Windows.

  2. Открыть Git Bash.

  3. Выполнить команду:

    ssh-keygen -t ed25519
  4. Будет предложено:

    • Указать путь для сохранения ключей (по умолчанию ~/.ssh/id_ed25519)
    • Установить фразовую парольную фразу (рекомендуется для дополнительной безопасности)

Вариант 3. Использование PuTTYgen:

  1. Скачать и установить PuTTY
  2. Запустить PuTTYgen
  3. Выбрать тип ключа (ed25519)
  4. Нажмите "Generate" и перемещайте мышь для создания энтропии
  5. Сохраните оба ключа (открытый и закрытый)

Копирование открытого ключа на сервер

После создания ключей, необходимо скопировать открытый ключ на целевой сервер

Использование метода ssh-copy-id (рекомендуется)

Если установлена утилита ssh-copy-id:

  1. Запустите утилиту ssh-copy-id
  2. Выполните команду:

ssh-copy-id username@remote_server_ip

  1. Будет предложено ввести пароль пользователя. После успешного ввода ваш открытый ключ будет автоматически добавлен в файл ~/.ssh/authorized_keys на сервере.

Ручное копирование ключа

Если утилита ssh-copy-id не установлена, необходимо:

  1. Отобразить содержимое открытого ключа:

    cat ~/.ssh/id_ed25519.pub
  2. Скопировать вывод команды

  3. Подлючиться к серверу по SSH:

    ssh username@remote_server_ip

  4. Создать каталог .ssh (если не существует) и установить правильные права:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  5. Добавить ключ в authorized_keys:

    echo "ваш_скопированный_ключ" >> ~/.ssh/authorized_keys
  6. Установить правильные права доступа:

    chmod 600 ~/.ssh/authorized_keys

Аутентификация на сервере с помощью SSH-ключа

Для подключения к серверу:

  1. Выполните команду:
ssh username@remote_server_ip

Важно!

Если установили фразовую парольную фразу при создании ключа, будет предложено ввести ее. Для удобства можно использовать SSH-агент для хранения фразы в сеансе.

Настройка SSH-агента

Для OC Linux и macOS:

  1. Для запуска SSH-агента:

В командной строке введите:


eval "$(ssh-agent -s)"
  1. Для добавление ключа введите команду:
ssh-add ~/.ssh/id_rsa

Для ОС Windows

  1. Запустите Git Bash
  2. Введите команду для запуска SSH-агента:
eval $(ssh-agent -s)
  1. Для добавления ключа введите команду:
ssh-add ~/.ssh/id_rsa

Отключение аутентификации по паролю

Важно!

После успешной настройки и проверки входа по SSH-ключу рекомендуется отключить аутентификацию по паролю для повышения безопасности.

Внимание!

Убедитесь, что вы можете войти с помощью SSH-ключа, прежде чем выполнять эти шаги!

Для отключения аутентификации по паролю, необходимо:

  1. Подключиться к серверу, выполнив команду:

    ssh username@remote_server_ip
  2. Открыть файл конфигурации SSH, выполнив команду:

    sudo nano /etc/ssh/sshd_config
  3. Найти и изменить следующие директивы:

    PasswordAuthentication no
    PermitEmptyPasswords no
    ChallengeResponseAuthentication no
    UsePAM no
  4. Сохраните изменения и перезагрузите SSH, выполнив команду:

    sudo systemctl reload sshd
  5. Проверить подключение в новом терминале, не закрывая текущее соединение